import Vue from 'vue'
// 表单处理模块
export default {

  /**
   * @description                   记录初始化的表单数据
   * @author                        TianYu
   * @param     {object}  self      当前页面的实例this
   * @param     {array}   data      当前页面需要绑定初始值的表单名称
   */
  initForm: (self, data) => {
    let arrayForm = []
    data.forEach((name) => {
      arrayForm.push({ [name]: self[name] })
    })
    sessionStorage.removeItem('forms')
    sessionStorage.setItem('forms', JSON.stringify(arrayForm))
  },

  /**
   * @description                   重置表单数据
   * @author                        TianYu
   * @param   {array}  data         可选参数，可传入重置指定的表单数组，如果不传入，则重置initForm绑定的所有表单值
   */
  resetForm: (self, data = []) => {
    if (data.length > 0) {
      let forms = JSON.parse(sessionStorage.getItem('forms'))
      forms.forEach((form) => {
        data.forEach((key) => {
          if (key in form) {
            self[key] = JSON.parse(JSON.stringify(form[key]))
            // if (self.$refs[key] !== undefined) {
            //   self.$refs[key].resetFields()
            // }
          }
        })
      })
    } else {
      // eslint-disable-next-line no-console
      console.warn('重置表单需要传入数组表单名')
    }
  },

  /**
   * @description                   赋值对应的值给表单对象
   * @param   {object} data         赋值数据
   * @param   {object} formModel    表单模型
   */
  setForm: (data, formModel) => {
    if (data) {
      let tempData = JSON.parse(JSON.stringify(data))
      Object.keys(formModel).forEach((key) => {
        if (tempData[key] !== undefined) {
          Vue.set(formModel, key, tempData[key])
        }
      })
    }
  },

  /**
   * @description      从对象中删除属性
   *
   * */
  deleteField: (array, target) => {
    array.forEach((key) => {
      delete target[key]
    })
  },

  /**
   * @description       表单验证模块
   * */
  Validator: {}
}
